import { getAction, deleteAction, putAction, postAction, httpAction } from '@/api/manage';
import Vue from 'vue';
import { UI_CACHE_DB_DICT_DATA } from '@/store/mutation-types';

//角色管理
const addRole = params => postAction('/sys/role/add', params);
const editRole = params => putAction('/sys/role/edit', params);
const checkRoleCode = params => getAction('/sys/role/checkRoleCode', params);
const queryall = params => getAction('/sys/role/queryall', params);

//用户管理
const addUser = params => postAction('/sys/user/add', params);
const editUser = params => putAction('/sys/user/edit', params);
const queryUserRole = params => getAction('/sys/user/queryUserRole', params);
const getUserList = params => getAction('/sys/user/list', params);
const frozenBatch = params => putAction('/sys/user/frozenBatch', params);
//验证用户是否存在
const checkOnlyUser = params => getAction('/sys/user/checkOnlyUser', params);
//改变密码
const changePassword = params => putAction('/sys/user/changePassword', params);

//权限管理
const addPermission = params => postAction('/sys/permission/add', params);
const editPermission = params => putAction('/sys/permission/edit', params);
const getPermissionList = params => getAction('/sys/permission/list', params);
const getSystemMenuList = params => getAction('/sys/permission/getSystemMenuList', params);
const getSystemSubmenu = params => getAction('/sys/permission/getSystemSubmenu', params);
const getSystemSubmenuBatch = params => getAction('/sys/permission/getSystemSubmenuBatch', params);
const queryTreeList = params => getAction('/sys/permission/queryTreeList', params);
const queryTreeListForRole = params => getAction('/sys/role/queryTreeList', params);
const queryListAsync = params => getAction('/sys/permission/queryListAsync', params);
const queryRolePermission = params => getAction('/sys/permission/queryRolePermission', params);
const saveRolePermission = params => postAction('/sys/permission/saveRolePermission', params);
const queryPermissionsByUser = () => getAction('/sys/permission/getUserPermissionByToken');
const loadAllRoleIds = params => getAction('/sys/permission/loadAllRoleIds', params);
const getPermissionRuleList = params => getAction('/sys/permission/getPermRuleListByPermId', params);
const queryPermissionRule = params => getAction('/sys/permission/queryPermissionRule', params);

// 部门管理
const queryDepartTreeList = params => getAction('/sys/sysDepart/queryTreeList', params);
const queryDepartTreeSync = params => getAction('/sys/sysDepart/queryDepartTreeSync', params);
const queryIdTree = params => getAction('/sys/sysDepart/queryIdTree', params);
const queryParentName = params => getAction('/sys/sysDepart/queryParentName', params);
const searchByKeywords = params => getAction('/sys/sysDepart/searchBy', params);
const deleteByDepartId = params => deleteAction('/sys/sysDepart/delete', params);

//二级部门管理
const queryDepartPermission = params => getAction('/sys/permission/queryDepartPermission', params);
const saveDepartPermission = params => postAction('/sys/permission/saveDepartPermission', params);
const queryTreeListForDeptRole = params => getAction('/sys/sysDepartPermission/queryTreeListForDeptRole', params);
const queryDeptRolePermission = params => getAction('/sys/sysDepartPermission/queryDeptRolePermission', params);
const saveDeptRolePermission = params => postAction('/sys/sysDepartPermission/saveDeptRolePermission', params);
const queryMyDepartTreeList = params => getAction('/sys/sysDepart/queryMyDeptTreeList', params);

//日志管理
const deleteLog = params => deleteAction('/sys/log/delete', params);
const deleteLogList = params => deleteAction('/sys/log/deleteBatch', params);

//数据字典
const addDict = params => postAction('/sys/dict/add', params);
const editDict = params => putAction('/sys/dict/edit', params);
const treeList = params => getAction('/sys/dict/treeList', params);
const addDictItem = params => postAction('/sys/dictItem/add', params);
const editDictItem = params => putAction('/sys/dictItem/edit', params);

//字典标签专用（通过code获取字典数组）
export const ajaxGetDictItems = (code, params) => getAction(`/sys/dict/getDictItems/${code}`, params);
//从缓存中获取字典配置
function getDictItemsFromCache(dictCode) {
  if (Vue.ls.get(UI_CACHE_DB_DICT_DATA) && Vue.ls.get(UI_CACHE_DB_DICT_DATA)[dictCode]) {
    let dictItems = Vue.ls.get(UI_CACHE_DB_DICT_DATA)[dictCode];
    //console.log("-----------getDictItemsFromCache----------dictCode="+dictCode+"---- dictItems=",dictItems)
    return dictItems;
  }
}

//系统通告
const doReleaseData = params => getAction('/sys/annountCement/doReleaseData', params);
const doReovkeData = params => getAction('/sys/annountCement/doReovkeData', params);
//获取系统访问量
const getLoginfo = params => getAction('/sys/loginfo', params);
const getVisitInfo = params => getAction('/sys/visitInfo', params);

// 根据部门主键查询用户信息
const queryUserByDepId = params => getAction('/sys/user/queryUserByDepId', params);

// 重复校验
const duplicateCheck = params => getAction('/sys/duplicate/check', params);
// 加载分类字典
const loadCategoryData = params => getAction('/sys/category/loadAllData', params);
const checkRuleByCode = params => getAction('/sys/checkRule/checkByCode', params);
//加载我的通告信息
const getUserNoticeInfo = params => getAction('/sys/sysAnnouncementSend/getMyAnnouncementSend', params);
const getTransitURL = url => `/sys/common/transitRESTful?url=${encodeURIComponent(url)}`;
// 中转HTTP请求
export const transitRESTful = {
  get: (url, parameter) => getAction(getTransitURL(url), parameter),
  post: (url, parameter) => postAction(getTransitURL(url), parameter),
  put: (url, parameter) => putAction(getTransitURL(url), parameter),
  http: (url, parameter) => httpAction(getTransitURL(url), parameter),
};

export {
  // imgView,
  // doMian,
  addRole,
  editRole,
  checkRoleCode,
  addUser,
  editUser,
  queryUserRole,
  getUserList,
  queryall,
  frozenBatch,
  checkOnlyUser,
  changePassword,
  getPermissionList,
  addPermission,
  editPermission,
  queryTreeList,
  queryListAsync,
  queryRolePermission,
  saveRolePermission,
  queryPermissionsByUser,
  loadAllRoleIds,
  getPermissionRuleList,
  queryPermissionRule,
  queryDepartTreeList,
  queryDepartTreeSync,
  queryIdTree,
  queryParentName,
  searchByKeywords,
  deleteByDepartId,
  deleteLog,
  deleteLogList,
  addDict,
  editDict,
  treeList,
  addDictItem,
  editDictItem,
  doReleaseData,
  doReovkeData,
  getLoginfo,
  getVisitInfo,
  queryUserByDepId,
  duplicateCheck,
  queryTreeListForRole,
  getSystemMenuList,
  getSystemSubmenu,
  getSystemSubmenuBatch,
  loadCategoryData,
  checkRuleByCode,
  queryDepartPermission,
  saveDepartPermission,
  queryTreeListForDeptRole,
  queryDeptRolePermission,
  saveDeptRolePermission,
  queryMyDepartTreeList,
  getUserNoticeInfo,
  getDictItemsFromCache,
};
